home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / musictex / older-versions / musictex.500 / MUSICNFT.TEX < prev    next >
Text File  |  1994-02-01  |  29KB  |  806 lines

  1. %
  2. % This is MusicNFT from MusicTeX
  3. \message{Version 5.01 -- February 1st, 1994}%
  4. %
  5. % finding which class of fonts is normally used (cmxxx, dmxxx, dcxxx,...)
  6. \def\wordsplita#1#2#3.XX.{#1}%
  7. \def\wordsplitb#1#2#3.XX.{#2}%
  8. \rm
  9. \edef\fonthdg{\expandafter\wordsplita\fontname\the\font.XX.}%
  10. \edef\fonthdge{\expandafter\wordsplitb\fontname\the\font.XX.}%
  11.  %
  12. \font\cmmi=cmmi10 scaled \magstep1
  13. \font\cmbxbig=\fonthdg\fonthdge bx10 scaled \magstep2
  14. \font\cmbx=\fonthdg\fonthdge bx10 scaled \magstep1
  15. \font\cmbxsmall=\fonthdg\fonthdge bx10 
  16. \font\cmbxtiny=\fonthdg\fonthdge bx8
  17. \font\cmbxmicro=\fonthdg\fonthdge bx7
  18. \font\moyen=\fonthdg\fonthdge bx10 scaled \magstep1
  19. \font\cmex=cmex10
  20. \font\cmsy=cmsy10 scaled \magstep1
  21. \font\cmr=\fonthdg\fonthdge r10 scaled \magstep1
  22. \font\ttyeight=\fonthdg\fonthdge tt8
  23.  
  24.  
  25. \edef\catcodeat{\the\catcode`\@}\catcode`\@=11
  26. \edef\catcode@gt{\the\catcode`\>}\catcode`\>=12
  27. \edef\catcode@lt{\the\catcode`\<}\catcode`\<=12
  28.  
  29. %
  30. \let\@plainwlog=\wlog
  31. \def\wlog#1{}%
  32. %
  33. \font\musictwenty=musikn20
  34. \fontdimen35\musictwenty=0pt\relax
  35. \font\musicsixteen=musikn16
  36. \font\slurntwenty=slurn20
  37. \font\slurnsixteen=slurn16
  38. \font\musicthirteen=musikn13
  39. \font\musiceleven=musikn11
  40. \font\beamtwenty=beamn20
  41. \fontdimen50\beamtwenty=0pt\relax
  42. \font\beamsixteen=beamn16
  43. \font\beamthirteen=beamn13
  44. \font\beameleven=beamn11
  45. %
  46. \newif\ifcautionacc
  47. \cautionaccfalse
  48. %
  49. \def\q@u{\musicnfont\char33\hss}%
  50. \def\h@a{\musicnfont\char34\hss}%
  51. \def\w@h{\musicnfont\char35\hss}%
  52. \def\d@iamg{\musicnfont\char0\hss}%
  53. \def\d@iamw{\musicnfont\char127\hss}%
  54. \def\s@haker{\musicnfont\char79\hss}%
  55. \def\t@remolord{\musicnfont\char78\hss}%
  56. \def\c@arrg{\musicnfont\char1\hss}%
  57. \def\c@arpg{\musicnfont\char2\hss}%
  58. \def\c@arqg{\musicnfont\char3\hss}%
  59. \def\w@hq{\musicnfont\char 125\hss}%
  60. \def\s@bv{\musicnfont\char36\hss}%
  61. \def\b@rv{\musicnfont\char32\hss}%
  62. \def\c@upchar{39}%   offset to upper eighth hook
  63. \def\c@dnchar{44}%   offset to upper eighth hook
  64. %
  65. \def\musicxx{\musicnorfont}%
  66. \def\slurnxx{\slurnorfont}%
  67. \def\slurnfont{\slurnorfont}%
  68. %
  69. \def\set@normalnotesize{\def\beamfont{\beamnorfont}%
  70. \def\musicnfont{\musicnorfont}%
  71. \def\i@nterbeam{0.75\Interligne}%
  72. \def\b@alkthick{0.24\Interligne}}
  73. %
  74. \def\set@smallnotesize{\def\beamfont{\beamsmallfont}%
  75. \def\musicnfont{\musicsmallfont}%
  76. \def\i@nterbeam{0.6\Interligne}%
  77. \def\b@alkthick{0.192\Interligne}}
  78. %
  79. \def\set@tinynotesize{\def\beamfont{\beamtinyfont}%
  80. \def\musicnfont{\musictinyfont}%
  81. \def\i@nterbeam{0.48\Interligne}%
  82. \def\b@alkthick{0.1536\Interligne}}
  83. %
  84. \set@normalnotesize
  85. %
  86. \def\qu@raise{\z@}%
  87. \def\ha@raise{\z@}%
  88. \def\wh@raise{\z@}%
  89. \def\zwq#1{\getn@i{#1}\def\n@fon{\zwq}\def\n@sym{\w@hq}\g@zw}%
  90. \def\zsb#1{\getn@i{#1}\def\n@fon{\zsb}\def\n@sym{\s@bv}\g@zsb}% semi-breve
  91. \def\zbv#1{\getn@i{#1}\def\n@fon{\zbv}\def\n@sym{\b@rv}\g@zbv}% breve
  92. \def\g@zbv{\n@raiseq
  93.   \h@lines{\bv@width}\def\s@tem{\resetstem}\plap@symss\fi}%
  94. \def\g@zsb{\n@raiseq
  95.   \h@lines{\sb@width}\def\s@tem{\resetstem}\plap@symss\fi}%
  96. %
  97. \newbox\ch@box
  98. \newdimen\lthick
  99. \global\lthick=0.4pt
  100. %\newdimen\qn@width
  101. %\newdimen\hn@width
  102. %\newdimen\wn@width
  103. %\newdimen\sb@width
  104. %\newdimen\bv@width
  105. \newdimen\qd@skip
  106. \newdimen\hd@skip
  107. \newdimen\wd@skip
  108. %
  109. \newcount\musicsize
  110. %
  111. \def\musickeyfont{\ifdim\internote<0.76\Internote\musictinyfont
  112. \else\ifdim\internote<0.95\Internote\musicsmallfont
  113.      \else\musicnorfont
  114.      \fi
  115. \fi}%
  116. %
  117. \def\meterfont{\ifdim\internote<0.76\Internote\metersmallfont
  118. \else\ifdim\internote<0.95\Internote\meternorfont
  119.      \else\meterbigfont
  120.      \fi
  121. \fi}%
  122. %
  123. \def\pointfont{\ifdim\internote<0.76\Internote\metertinyfont
  124. \else\ifdim\internote<0.95\Internote\metersmallfont
  125.      \else\meternorfont
  126.      \fi
  127. \fi}%
  128. %
  129. \def\computespecifics{\ifnum\musicsize=0\relax\musicsize=20\relax\fi
  130. \ifnum\musicsize=20\relax
  131.   \def\ppff{\ppfftwenty}%
  132.   \def\beamnorfont{\beamtwenty}\def\musicnorfont{\musictwenty}%
  133.   \def\beamsmallfont{\beamsixteen}\def\musicsmallfont{\musicsixteen}%
  134.   \def\beamtinyfont{\beamthirteen}\def\musictinyfont{\musicthirteen}%
  135.   \def\meternorfont{\cmbx}\def\metersmallfont{\cmbxsmall}%
  136.   \def\metertinyfont{\cmbxtiny}\def\slurnorfont{\slurntwenty}%
  137.   \def\meterbigfont{\cmbxbig}%
  138. \else
  139.   \def\ppff{\ppffsixteen}%
  140.   \def\beamnorfont{\beamsixteen}\def\musicnorfont{\musicsixteen}%
  141.   \def\beamsmallfont{\beamthirteen}\def\musicsmallfont{\musicthirteen}%
  142.   \def\beamtinyfont{\beameleven}\def\musictinyfont{\musiceleven}%
  143.   \def\meternorfont{\cmbxsmall}\def\metersmallfont{\cmbxtiny}%
  144.   \def\metertinyfont{\cmbxmicro}\def\slurnorfont{\slurnsixteen}%
  145.   \def\meterbigfont{\cmbx}%
  146. \fi
  147. \Interligne=\musicsize pt\divide\Interligne by 4\relax
  148. \Internote=0.5\Interligne
  149. \interbeam=\i@nterbeam
  150. \setbox\ch@box=\hbox{\w@h}\wn@width=\wd\ch@box
  151. \setbox\ch@box=\hbox{\s@bv}\sb@width=\wd\ch@box
  152. \setbox\ch@box=\hbox{\b@rv}\bv@width=\wd\ch@box
  153. \setbox\ch@box=\hbox{\c@arrg}\gr@width=\wd\ch@box
  154. \setbox\ch@box=\hbox{\h@a}\hn@width=\wd\ch@box
  155. \setbox\ch@box=\hbox{\q@u}\qn@width=\wd\ch@box
  156. \qd@skip=\qn@width\advance\qd@skip by -\hlthick
  157. \hd@skip=\hn@width\advance\hd@skip by -\hlthick
  158. \wd@skip=\wn@width\advance\wd@skip by -\hlthick
  159. }%
  160. \def\normalnotesize{\set@normalnotesize\computespecifics
  161.   \def\currentsize{\normalnotesize}}
  162. \def\smallnotesize{\set@smallnotesize\computespecifics
  163.   \def\currentsize{\smallnotesize}}
  164. \def\tinynotesize{\set@tinynotesize\computespecifics
  165.   \def\currentsize{\tinynotesize}}
  166. %
  167. %\check
  168. %
  169. \def\s@oupir{{\musicnfont\char"3E}}%
  170. %
  171.  %\newdimen\c@height
  172. \newcount\c@mult
  173. %\check
  174. \def\d@cr#1{\c@mult=#1\relax    % queue de #1 croche(s) vers le haut
  175. \advance\c@mult by \c@upchar\d@crg}%
  176. \def\d@gru{\c@mult=12\relax\d@crg}% queue de croche barree vers le haut
  177. \def\d@crg{\setbox\ch@box=\rlap{\musicnfont\char\c@mult}\c@height=\ht\ch@box
  178. \global\advance\st@top by \c@height
  179. \global\advance\st@top by \internote
  180.   \ifdim\st@top>\st@bot
  181.     \maxst@top
  182.     \global\advance\st@bot by -\altportee
  183.     \global\advance\st@top by -\altportee
  184.     \kern\stem@skip\vrule height\st@top depth -\st@bot width \lthick
  185.     \advance\st@top by -\c@height\raise\st@top\box\ch@box
  186.     \kern -\lthick \kern-\stem@skip    
  187.   \fi\resetstem}%
  188. %\check
  189. \def\p@cr#1{\c@mult=#1\relax    % queue de #1 croche(s) vers le bas
  190. \advance\c@mult by \c@dnchar\p@crg}%
  191. \def\p@gru{\c@mult=13\relax\p@crg}% queue de croche barree vers la bas
  192. \def\p@crg{\setbox\ch@box=\rlap{\kern \hlthick\musicnfont
  193.     \char\c@mult}\c@height=\ht\ch@box
  194. \global\advance\st@bot by -\internote
  195. \global\advance\st@bot by -\c@height
  196. \ifdim\st@top>\st@bot
  197.  \minst@bot
  198.  \global\advance\st@bot by -\altportee
  199.  \global\advance\st@top by -\altportee
  200.  \raise\st@bot\box\ch@box
  201.  \vrule height\st@top depth -\st@bot width \lthick
  202.  \kern -\lthick
  203. \fi \resetstem}%
  204. %
  205. % grace notes (croches barrees)
  206. \def\grcu#1{\getn@i{#1}\def\n@sym{\q@u}\def\n@fon{\grcu}\n@raiseq
  207.   \h@linesqn\global\stem@skip=\qd@skip
  208.   \def\s@tem{\d@gru}\pl@symssq\fi}%
  209. \def\grcl#1{\getn@i{#1}\def\n@sym{\q@u}\def\n@fon{\grcl}\n@raiseq    
  210.   \h@linesqn\def\s@tem{\p@gru}\pl@symssq\fi}%
  211. %
  212. %\check
  213. \def\s@harp{\musicnfont\char"34}\def\sh@raise{\z@}%
  214. \def\f@lat{\musicnfont\char"32}\def\fl@raise{\z@}%
  215. \def\n@at{\musicnfont\char"36}\def\na@raise{\z@}%
  216. \def\ds@harp{\musicnfont\char"35}%
  217. \def\df@lat{\musicnfont\char"33}%
  218. %
  219. \def\smalln@at{\cau@left\musicnfont\char"7C\cau@right}%
  220. \def\smallf@lat{\cau@left\musicnfont\char"78\cau@right}%
  221. \def\smalls@harp{\cau@left\musicnfont\char"7A\cau@right}%
  222. \def\smallds@harp{\cau@left\musicnfont\char"7B\cau@right}%
  223. \def\smalldf@lat{\cau@left\musicnfont\char"79\cau@right}%
  224. \def\cau@left{\ifcautionacc\raise-.45\Interligne
  225.      \hbox{\ttyeight(\kern -\lthick}\fi} 
  226. \def\cau@right{\ifcautionacc\raise-.45\Interligne
  227.      \hbox{\ttyeight\kern -\lthick)\kern -.2\Interligne}\fi\cautionaccfalse} 
  228. %
  229. \def\n@rpl@lap{\global\n@raise=\z@\pl@llap}%
  230. \def\bigsh#1{\inhgetn@i{#1}\n@rpl@lap{\s@harp}}%
  231. \def\smallsh#1{\inhgetn@i{#1}\n@rpl@lap{\smalls@harp}}%
  232. \def\csh{\cautionacctrue\smallsh}%
  233. \def\uppersh#1{\zcharnote{#1}{\raise3\internote
  234. \hbox to \qn@width{\hss\smalls@harp\hss}}}%
  235. %
  236. \def\bigdsh#1{\inhgetn@i{#1}\n@rpl@lap{\ds@harp}}%
  237. \def\smalldsh#1{\inhgetn@i{#1}\n@rpl@lap{\smallds@harp}}%
  238. \def\cdsh{\cautionacctrue\smalldsh}%
  239. %
  240. \def\bigna#1{\inhgetn@i{#1}\n@rpl@lap{\n@at}}%
  241. \def\smallna#1{\inhgetn@i{#1}\n@rpl@lap{\smalln@at}}%
  242. \def\cna{\cautionacctrue\smallna}%
  243. \def\upperna#1{\zcharnote{#1}{\raise3\internote
  244. \hbox to \qn@width{\hss\smalln@at\hss}}}%
  245. %
  246. \def\bigfl#1{\inhgetn@i{#1}\n@rpl@lap{\f@lat}}%
  247. \def\smallfl#1{\inhgetn@i{#1}\n@rpl@lap{\smallf@lat}}%
  248. \def\cfl{\cautionacctrue\smallfl}%
  249. \def\upperfl#1{\zcharnote{#1}{\raise3\internote
  250. \hbox to \qn@width{\hss\smallf@lat\hss}}}%
  251. %
  252. \def\bigdfl#1{\inhgetn@i{#1}\n@rpl@lap{\df@lat}}%
  253. \def\smalldfl#1{\inhgetn@i{#1}\n@rpl@lap{\smalldf@lat}}%
  254. \def\cdfl{\cautionacctrue\smalldfl}
  255. %
  256. \def\na#1{\ifdim\small@test\bigna{#1}\else\smallna{#1}\fi}%
  257. \def\fl#1{\ifdim\small@test\bigfl{#1}\else\smallfl{#1}\fi}%
  258. \def\sh#1{\ifdim\small@test\bigsh{#1}\else\smallsh{#1}\fi}%
  259. \def\dfl#1{\ifdim\small@test\bigdfl{#1}\else\smalldfl{#1}\fi}%
  260. \def\dsh#1{\ifdim\small@test\bigdsh{#1}\else\smalldsh{#1}\fi}%
  261. %
  262. %\check
  263. \def\b@adjust{\ifdim\y@ii>2.1\q@antum
  264. \multiply\q@antum by 2\relax\advance\b@char by 1\relax\fi
  265. }%
  266. \newcount\b@char
  267. \def\b@alkdefs{\b@char=0\relax
  268. \ifnum \b@p>0\relax\b@char=\b@p\relax\multiply\b@char by 6\relax
  269.   \advance\b@char by -6\relax\ifnum\b@char>54\relax\b@char=54\relax\fi\fi
  270. \ifnum \b@p<0\relax\b@char=-\b@p\relax\multiply\b@char by 6\relax
  271.   \advance\b@char by 58\relax\ifnum\b@char>118\relax\b@char=118\relax\fi\fi
  272. \q@antum=60pt\divide\q@antum by 32\relax\b@adjust
  273. \b@adjust
  274. \b@adjust
  275. \b@adjust
  276. \b@adjust
  277. \chardef\b@alk=\b@char}%
  278. %\check
  279. \def\s@lopdefs{\q@antum=60pt\divide\q@antum by 32\relax \def\s@lope{0.0}\relax
  280. \ifnum \b@p=1\relax\def\s@lope{0.05}\fi
  281. \ifnum \b@p>1\relax\b@char=\b@p\relax\multiply\b@char by 5\relax
  282.   \ifnum\b@char>50\relax\b@char=50\relax\fi
  283.   \edef\s@lope{0.\the\b@char}\fi
  284. \ifnum \b@p=-1\relax\def\s@lope{-0.05}\fi
  285. \ifnum \b@p<-1\relax\b@char=-\b@p\relax\multiply\b@char by 5\relax
  286.   \ifnum\b@char>50\relax\b@char=50\relax\fi
  287.   \edef\s@lope{-0.\the\b@char}\fi
  288. }%
  289. %\check
  290. \def\p@outre{%    \y@ii : longueur,   \b@p : pente,  \y@i : altitude
  291. \ifnum \b@p=0\relax
  292.   \y@iii=\y@i\y@iv=\y@i
  293.   \advance\y@iii by -\b@alkthick
  294.   \advance\y@iv by \b@alkthick
  295.   \vrule height \y@iv depth -\y@iii  width \y@ii
  296. %  \raise  \y@i\hbox{\vrule height \b@alkthick depth \b@alkthick
  297. %      width \y@ii}
  298. \else\b@alkdefs\beamfont
  299.   \global\y@iv=\z@
  300.   \loop\ifdim\y@iv<\y@ii
  301.     {\y@v=\y@ii\advance\y@v by -\y@iv
  302.     \advance\y@v by -\q@antum
  303.     \y@iii=\y@i
  304.     \advance\y@iii by \s@lope\y@iv
  305.     \ifdim\y@v<\z@\advance\y@iii by \s@lope\y@v\hskip\y@v\fi
  306.     \raise\y@iii\hbox to \q@antum{\b@alk\hss}\global\advance\y@iv by \q@antum
  307.     }\repeat
  308. \fi
  309. }%
  310. %\check
  311. \def\clefdefasymbol{\hbox to 3.2\Interligne{\musickeyfont
  312.      \kern -0.8\internote\hss\char"49\hss}}%
  313. \def\smallclefdefa{\hbox to 2.8\Interligne{\musickeyfont
  314.      \kern -0.64\internote\hss\char"4A\hss}}%
  315. %\check
  316. \def\clefdesolsymbol{\hbox to 3.2\Interligne{\musickeyfont
  317.      \kern -1.2\internote\hss\char"47\hss}}%
  318. \def\smallclefdesol{\hbox to 2.8\Interligne{\musickeyfont
  319. \kern -0.96\internote\hss\char"48\hss}}%
  320. %\check
  321. \def\clefdutsymbol{\hbox to 3.2\Interligne{\musickeyfont
  322.    \kern -0.8\internote\hss\char"4B\hss}}%
  323. \def\smallclefdut{\hbox to 2.8\Interligne{\musickeyfont
  324.    \kern -0.64\internote\hss\char"4C\hss}}%
  325. \def\gclefdut{\hbox to 3.2\Interligne{\musickeyfont
  326.    \kern 0.4\internote\hss\char"04\hss}}%
  327. \def\drumclefsymbol{\hbox to 3.2\Interligne{\musickeyfont
  328.    \kern 0.4\internote\hss\char"4D\hss}}%
  329. %
  330. \def\allabreve{{\kern \internote\musickeyfont\char"52}}%
  331. \def\meterC{{\kern \internote\musickeyfont\char"53}}%
  332. %
  333. \def\d@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"3F}}%
  334. \def\q@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"40}}%
  335. \def\h@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"41}}%
  336. \def\s@soup{\hbox{\kern -0.3\qn@width\musicnfont\char"42}}%
  337. \def\p@orgue{\hbox{\kern -0.5\hn@width\musicnfont\char"50}}%
  338. \def\p@urgue{\hbox{\kern -0.5\hn@width\musicnfont\char"51}}%
  339. \def\trille#1{\hbox to #1{\leaders\hbox{\musicnfont\char"64}\hfill}}%
  340. \def\Trille#1{\hbox to #1{\it tr\leaders\hbox{\musicnfont\char"64}\hfill}}%
  341. %
  342. % Gregorian notes
  343. %
  344. \def\diamg#1{\getn@i{#1}\def\n@fon{\diamg}\def\n@sym{\d@iamg}\g@diamg}%
  345. \def\zdiamg#1{\getn@i{#1}\def\n@fon{\diamg}\def\n@sym{\d@iamg}\rlap{\g@diamg}}%
  346. \def\diamw#1{\getn@i{#1}\def\n@fon{\diamw}\def\n@sym{\d@iamw}\g@diamg}%
  347. \def\zdiamw#1{\getn@i{#1}\def\n@fon{\diamw}\def\n@sym{\d@iamw}\rlap{\g@diamg}}%
  348. \def\shaker#1{\charnote{#1}{\s@haker}}%
  349. \def\zshaker#1{\zcharnote{#1}{\s@haker}}%
  350. \def\tremolord#1{\charnote{#1}{\t@remolord}}%
  351. \def\ztremolord#1{\zcharnote{#1}{\t@remolord}}%
  352. \def\carrg#1{\getn@i{#1}\def\n@fon{\carrg}\def\n@sym{\c@arrg}\g@diamg}%
  353. \def\zcarrg#1{\getn@i{#1}\def\n@fon{\carrg}\def\n@sym{\c@arrg}\rlap{\g@diamg}}%
  354. \def\carqg#1{\getn@i{#1}\def\n@fon{\carqg}\def\n@sym{\c@arqg}\g@diamg}%
  355. \def\zcarqg#1{\getn@i{#1}\def\n@fon{\carqg}\def\n@sym{\c@arqg}\rlap{\g@diamg}}%
  356. \def\carpg#1{\getn@i{#1}\def\n@fon{\carpg}\def\n@sym{\c@arpg}\g@diamg}%
  357. \def\zcarpg#1{\getn@i{#1}\def\n@fon{\carpg}\def\n@sym{\c@arpg}\rlap{\g@diamg}}%
  358. %
  359. \def\g@diamg{\advancetrue\g@diam}%
  360. \def\g@diam{\global\n@raise=\wh@raise\ifnum\n@i<100\relax
  361.   \h@lines{\gr@width}\def\s@tem{\resetstem}\pl@symssq\fi}%
  362.  %\check
  363. %
  364. % arpeges
  365. %
  366. \def\arpegesym#1{\hbox to \Interligne{\kern -1.2\Interligne
  367. \vbox to #1{\parindent=\z@
  368. \offinterlineskip\ifdim #1>4\Interligne\Arp@elem\fi\hrule
  369. \cleaders\arp@elem\vfill\kern -\interligne}\hss}}%
  370. \def\arp@elem{\vbox to \Interligne{\vss\musicnorfont\char"5A}}%
  371. \def\Arp@elem{\vbox to 4\Interligne{\vss\musicnorfont\char"5D}}%
  372. %
  373. \def\arpeggio#1#2{\zcharnote{#1}{\n@iii=#2\relax\advance\n@iii by 89\relax
  374. \musicnorfont\chardef\arp@el=\n@iii\relax\arp@el}\qsk}%
  375. \def\larpeggio#1#2{\lcharnote{#1}{\n@iii=#2\relax\advance\n@iii by 89\relax
  376. \musicnorfont\chardef\arp@el=\n@iii\relax\arp@el\kern -0.3\qn@width}\qsk}%
  377. %
  378. %
  379. % This skip aligns some ornaments which appear not to be centred precisely
  380. % on the notes
  381. \def\o@skp{\kern-.5\hd@skip}
  382. \def\mordant#1{\zcharnote{#1}{\musicnfont\char 89}}%
  383. \def\pince#1{\zcharnote{#1}{\musicnfont\char 87}}%
  384. \def\Pince#1{\zcharnote{#1}{\musicnfont\char 88}}%
  385. \def\Lpince#1{\zcharnote{#1}{\musicnfont\char 7}}%
  386. \def\Pincesw#1{\zcharnote{#1}{\musicnfont\char 11}}%
  387. \def\Pincenw#1{\zcharnote{#1}{\musicnfont\char 10}}%
  388. \def\Pincene#1{\zcharnote{#1}{\musicnfont\char 9}}%
  389. % \turn p      makes a turn             symbol at pitch p, causing no space
  390. % \backturn p  makes a backward turn    symbol at pitch p, causing no space
  391. % \coda p      makes a coda             ...
  392. % \segno p     makes the special "S"    ...
  393. \def\turn#1{\zcharnote{#1}{\o@skp\musicnfont\char"44}}
  394. \def\backturn#1{\zcharnote{#1}{\o@skp\musicnfont\char"43}}
  395. \def\coda#1{\zcharnote{#1}{\o@skp\musicnorfont\char"55}}
  396. \def\segno#1{\zcharnote{#1}{\o@skp\musicnorfont\char"56}}
  397. %
  398. \def\sforz#1{{\advance\transpose by -2\usf{#1}}}%
  399. \def\pz#1{{\advance\transpose by -2\upz{#1}}}%
  400. \def\ppz#1{\uppz{#1}}%
  401. \def\st#1{{\advance\transpose by -2\ust{#1}}}%
  402. %
  403. \def\usf#1{\zcharnote{#1}{\musicnfont\char 30}}%
  404. \def\lsf#1{\zcharnote{#1}{\musicnfont\char 31}}%
  405. \def\ust#1{\zcharnote{#1}{\musicnfont\char 26}}%
  406. \def\lst#1{\zcharnote{#1}{\musicnfont\char 27}}%
  407. \def\upz#1{\zcharnote{#1}{\musicnfont\char 24}}%
  408. \def\lpz#1{\zcharnote{#1}{\musicnfont\char 25}}%
  409. \def\uppz#1{\zcharnote{#1}{\musicnfont\char 28}}%
  410. \def\lppz#1{\zcharnote{#1}{\musicnfont\char 29}}%
  411. %
  412. % placement des accents au-dessus de poutres et non de tetes de notes
  413. \def\acc@balk{\global\stem@skip=\z@  %
  414. \y@ii=\b@z                     % a augmenter avec la pente
  415. \y@v=\locx@skip\advance\y@v by \stem@skip\advance\y@v by -\b@x
  416. \advance\y@ii by \s@lope\y@v
  417. \advance\y@ii by -\altportee
  418. \raise\y@ii\rlap{\kern\stem@skip\balk@accent}}%
  419. %\check
  420. \def\busf#1{\def\balk@accent{\musicnfont\char 30}\selectpoutre{#1}\acc@balk}%
  421. \def\blsf#1{\def\balk@accent{\musicnfont\char 31}\selectpoutre{#1}\acc@balk}%
  422. \def\bust#1{\def\balk@accent{\musicnfont\char 26}\selectpoutre{#1}\acc@balk}%
  423. \def\blst#1{\def\balk@accent{\musicnfont\char 27}\selectpoutre{#1}\acc@balk}%
  424. \def\bupz#1{\def\balk@accent{\musicnfont\char 24}\selectpoutre{#1}\acc@balk}%
  425. \def\blpz#1{\def\balk@accent{\musicnfont\char 25}\selectpoutre{#1}\acc@balk}%
  426. \def\buppz#1{\def\balk@accent{\musicnfont\char 28}\selectpoutre{#1}\acc@balk}%
  427. \def\blppz#1{\def\balk@accent{\musicnfont\char 29}\selectpoutre{#1}\acc@balk}%
  428. %
  429. % soufflets crescendo et decrescendo
  430. %
  431. \def\dimin{{\musicnorfont\char"10}}%
  432. \def\Dimin{{\musicnorfont\char"11}}%
  433. \def\DImin{{\musicnorfont\char"12}}%
  434. \def\DIMin{{\musicnorfont\char"13}}%
  435. \def\cresc{{\musicnorfont\char"14}}%
  436. \def\Cresc{{\musicnorfont\char"15}}%
  437. \def\CResc{{\musicnorfont\char"16}}%
  438. \def\CREsc{{\musicnorfont\char"17}}%
  439. %
  440. % colons for repeats (:| |: :||:)
  441. %
  442. %\check
  443. \def\w@coli{\selectinstr{\p@loop\raise\altportee
  444.   \hbox to \z@{\hss\musickeyfont\char 126\hss}\n@portee\repeat}}%
  445. %
  446. % long pauses
  447. %
  448. \def\PAuse{\hbox to \noteskip{\musicnorfont\char"3A\hss}\advance\locx@skip
  449.  by \noteskip}%
  450. \def\PAUSe{\hbox to \noteskip{\musicnorfont\char"3B\hss}\advance\locx@skip
  451.  by \noteskip}%
  452. \def\expause#1{\charnote{#1}{\musicnorfont\char 5\hss}} 
  453. \def\zexpause#1{\zcharnote{#1}{\musicnorfont\char 5\hss}} 
  454. \def\exhpause#1{\charnote{#1}{\musicnorfont\char 6\hss}} 
  455. \def\zexhpause#1{\zcharnote{#1}{\musicnorfont\char 6\hss}} 
  456. %
  457. % special song system left begins
  458. %
  459. \def\type@songsymbols{\raise\lowersongalt\llap{\musicnorfont\char 15}%
  460. \advance\lowersongalt by \uppersongalt
  461. \advance\lowersongalt by -\hlthick
  462. \raise\lowersongalt\llap{\musicnorfont\char 14}}
  463. %
  464. %
  465. % horizontal upper slur offset by #2 noteheads, total width #1
  466. %
  467. \def\h@uslur#1#2{\y@v=#1\relax\advance\y@v by -#2\hn@width
  468. \global\setbox\ch@box=\hbox{\slurnorfont\char31}% maximum of one part slurs
  469. \ifdim\wd\ch@box>\y@v
  470.   \global\n@iii=0\relax
  471.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  472.   \ifdim\wd\ch@box<\y@v\global\advance\n@iii by 1\relax
  473.   \repeat
  474.   \hbox to #1{\kern #2\hn@width\hss\slurnorfont\char\n@iii\hss}%
  475. \else
  476.   \global\n@iii=79\relax
  477.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  478.   \ifdim 2\wd\ch@box>\y@v\global\advance\n@iii by -1\relax
  479.   \repeat
  480.   \hbox to #1{\kern #2\hn@width\y@iv=\ht\ch@box\y@iii=-\ht\ch@box
  481.   \advance\y@iii by \t@y
  482.   \slurnorfont\char\n@iii
  483.   \leaders\hrule height \y@iv depth \y@iii\hfill
  484.   \advance\n@iii by 16\relax \char\n@iii}%
  485. \fi}
  486. %
  487. % horizontal lower slur offset by #2 noteheads, total width #1
  488. %
  489. \def\h@dslur#1#2{\y@v=#1\relax\advance\y@v by -#2\hn@width
  490. \global\setbox\ch@box=\hbox{\slurnorfont\char31}% maximum of one part slurs
  491. \ifdim\wd\ch@box>\y@v
  492.   \global\n@iii=32\relax
  493.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  494.   \ifdim\wd\ch@box<\y@v\global\advance\n@iii by 1\relax
  495.   \repeat
  496.   \hbox to #1{\kern #2\hn@width\hss\slurnorfont\char\n@iii\hss}%
  497. \else
  498.   \global\n@iii=111\relax
  499.   \loop\global\setbox\ch@box=\hbox{\slurnorfont\char\n@iii}%
  500.   \ifdim 2\wd\ch@box>\y@v\global\advance\n@iii by -1\relax
  501.   \repeat
  502.   \hbox to #1{\kern #2\hn@width\y@iv=\dp\ch@box\y@iii=-\dp\ch@box
  503.   \advance\y@iii by \t@y
  504.   \slurnorfont\char\n@iii
  505.   \leaders\hrule height \y@iii depth \y@iv\hfill
  506.   \advance\n@iii by 16\relax \char\n@iii}%
  507. \fi}
  508. %
  509. % sames without offsets
  510. %
  511. \def\hdslur#1{\h@dslur {#1}0}
  512. \def\huslur#1{\h@uslur {#1}0}
  513. %
  514. % noter un debut de tenue
  515. %
  516. \def\ITenu#1{\selecttenue{#1}\I@tenu{70}}%
  517. \def\Ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
  518. \I@tenu{70}{#2}}}%
  519. \def\Itenu#1{\selecttenue{#1}\I@tenu{66}}%
  520. \def\ilegu#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
  521. \I@tenu{66}{#2}}}%
  522. \def\ITenl#1{\selecttenue{#1}\I@tenl{102}}%
  523. \def\Ilegl#1#2{\selecttenue{#1}\advance\locx@skip by -1.5\qn@width
  524. \I@tenl{102}{#2}\advance\locx@skip by 1.5\qn@width}%
  525. \def\Itenl#1{\selecttenue{#1}\I@tenl{98}}%
  526. \def\ilegl#1#2{\selecttenue{#1}{\advance\locx@skip by -1.5\qn@width
  527. \I@tenl{98}{#2}}}%
  528. %
  529. \def\I@tenall{\global\t@s=1\relax % etat en cours
  530.   \global\t@x=\locx@skip
  531.   \global\advance\t@x by 0.8\qd@skip
  532.   \global\t@y= 0.15\Interligne
  533.   \pl@base\global\t@z=\y@i\global\advance\t@z by\altportee
  534.   \setbox\ch@box=\hbox{\L@slur}}%
  535. %
  536. \def\I@tenu#1#2{\global\t@p=1\relax % sens=1
  537.   \global\t@w=#1\relax
  538.   \inhgetn@i{#2}%
  539.   \I@tenall
  540.   \global\advance\t@z by \ht\ch@box
  541.   \global\advance\t@z by 0.24\Interligne
  542.   \global\advance\t@z by -\t@y
  543.   \up@tenbox}%
  544. %
  545. \def\I@tenl#1#2{\global\t@p=-1\relax % sens= -1
  546.   \global\t@w=#1\relax
  547.   \inhgetn@i{#2}%
  548.   \I@tenall
  549.   \global\advance\t@z by -\dp\ch@box
  550.   \global\advance\t@z by -0.24\Interligne
  551.   \up@tenbox}%
  552.  
  553. \def\Invertslur#1{\selecttenue{#1}\global\t@p=-\t@p
  554. \ifnum\t@w>63\relax
  555.  \ifnum\t@w<96\global\advance\t@w by 32\relax
  556.  \else\global\advance\t@w by -32\fi
  557. \fi}
  558.  
  559.  
  560. %
  561. %\check
  562. %
  563. \def\Tten{\tten}%
  564. \def\Tleg{\tleg}%
  565. %  
  566. \def\t@ten{\y@i=\t@z\advance\y@i by -\altportee
  567. \y@ii=\locx@skip\advance\y@ii by -\t@x
  568. \ifnum\t@w=0\relax\else\advance\y@ii by 0.4\qd@skip\fi
  569. \ifnum\t@p>0\relax
  570.   \ifnum\t@s=2\relax
  571.     \raise\y@i\llap{\ifnum\t@w=0\relax
  572.                       \up@rleg\else
  573.                       \Up@rleg\kern -0.2\qd@skip\fi}%
  574.   \else
  575.     \raise\y@i\llap{\ifnum\t@w=0\relax
  576.                       \up@leg\else
  577.                       \Up@leg\kern -0.2\qd@skip\fi}%
  578.   \fi
  579. \else
  580.   \ifnum\t@s=2\relax
  581.     \raise\y@i\llap{\ifnum\t@w=0\relax
  582.                       \lo@rleg\else
  583.                       \Lo@rleg\kern -0.2\qd@skip\fi}%
  584.   \else
  585.     \raise\y@i\llap{\ifnum\t@w=0\relax
  586.                       \lo@leg\else
  587.                       \Lo@leg\kern -0.2\qd@skip\fi}%
  588.   \fi
  589. \fi
  590. \global\t@w=0\relax
  591. \global\t@s=0\relax
  592. \@uptenubox}%
  593. %
  594. %
  595. \def\L@slur{\slurnorfont\char\t@w}%
  596. \def\R@slur{\global\advance\t@w by 16\slurnorfont\char\t@w}%
  597. \newdimen\slur@off
  598. \newdimen\slur@maxlen
  599. %
  600. \def\leg@hrule{\leaders\hrule height \t@y\hfill}%
  601. %
  602. % complete slur of length #1 (up and down)
  603. \def\Up@leg{%    longueur \y@ii
  604. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box 
  605.   \advance\slur@off by -\t@y
  606.   \ifdim \y@ii>2\wd\ch@box
  607.     \raise -\slur@off\hbox{\L@slur}\leg@hrule\raise -\slur@off\hbox{\R@slur}%
  608.   \else
  609.     \raise -\slur@off\hbox{\huslur{\y@ii}}%
  610.   \fi}}%
  611. %
  612. \def\Lo@leg{%    longueur \y@ii
  613. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box 
  614.   \advance\slur@off by -0.3\t@y
  615.   \ifdim \y@ii>2\wd\ch@box
  616.     \raise -\slur@off\hbox{\L@slur}\leg@hrule\raise -\slur@off\hbox{\R@slur}%
  617.   \else
  618.     \raise -\slur@off\hbox{\hdslur{\y@ii}}%
  619.   \fi}}%
  620. %
  621. % slur termination of length #1 (up and down)
  622. \def\Up@rleg{%    longueur \y@ii
  623. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box %
  624.   \advance\slur@off by -\t@y
  625.   \ifdim \y@ii>\wd\ch@box\leg@hrule
  626.   \else\hss\fi  \raise -\slur@off\hbox{\R@slur}}}%
  627. %
  628. \def\Lo@rleg{%    longueur \y@ii
  629. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box %   
  630.   \advance\slur@off by -0.3\t@y
  631.   \ifdim \y@ii>\wd\ch@box\leg@hrule
  632.   \else\hss\fi  \raise -\slur@off\hbox{\R@slur}}}%
  633. %
  634. %\check
  635. %
  636. % slur beginning (left) (up and down)
  637. \def\Up@les{%    longueur \y@ii
  638. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=\ht\ch@box
  639.   \advance\slur@off by -\t@y
  640.   \UpLo@les}}%
  641. %
  642. %\check
  643. %
  644. \def\Lo@les{%    longueur \y@ii
  645. \hbox to \y@ii{\setbox\ch@box=\hbox{\L@slur}\slur@off=-\dp\ch@box
  646.   \advance\slur@off by -0.3\t@y
  647.   \UpLo@les}}%
  648. %
  649. %\check
  650. %
  651. \def\UpLo@les{\raise -\slur@off\hbox{\L@slur}%
  652.   \advance\y@ii by -\wd\ch@box
  653.   \ifdim \y@ii>\z@\leg@hrule
  654.   \else\hss
  655. %    \ifdim\y@ii<-.8\p@ \vrule height 1cm\fi
  656.   \fi}%
  657. %\check
  658. %
  659. \def\c@ten{%\rlap{\vrule height 1cm}
  660.      \y@ii=\x@skip\advance\y@ii by -\t@x
  661.      \global\t@x=-.8\p@  %<--
  662.      \ifnum\t@s=1\relax
  663.        \ifnum\t@w=0\relax
  664.            \ifnum\t@p>0\relax
  665.            \raise\t@z\llap{\up@les}\else
  666.            \raise\t@z\llap{\lo@les}\fi
  667.        \else
  668.            \ifnum\t@p>0\relax
  669.            \raise\t@z\llap{\Up@les}\else
  670.            \raise\t@z\llap{\Lo@les}\fi
  671.        \fi    
  672.      \else
  673.        \ifnum\t@s=2\relax
  674.          \slur@off=\t@z
  675.          \advance\slur@off by \t@y
  676. %         \advance\slur@off by 3\p@
  677.          \kern -\y@ii\vrule height \slur@off depth -\t@z width \y@ii
  678.        \fi
  679.      \fi
  680.      \global\t@s=2\relax            
  681. }%
  682. %
  683. \def\n@skmb{\nobreak\global\slur@maxlen=\z@
  684. % compute the maximum length of slurs to be handled
  685.   \ten@loop
  686.      \setbox\ch@box=\hbox{\ifnum\t@w=0\relax\lu@slur
  687.                            \else\L@slur\fi}\ifdim\slur@maxlen<\wd\ch@box
  688.      \global\slur@maxlen=\wd\ch@box\fi
  689.      \global\advance\n@l by 1\relax
  690.   \repeat
  691. % compute the maximum excess length of beginning slurs  
  692.   \global\slur@off=\z@
  693.   \ten@loop
  694.      \y@ii=\x@skip\advance\y@ii by \n@skip\advance\y@ii by -\t@x
  695.      \advance\y@ii by -\slur@maxlen
  696.      % \y@ii is the length that will be given to \c@ten for that slur/tie
  697.      % assuming \slur@maxlen left offset...
  698.      \ifnum\t@s=1\relax
  699.        \setbox\ch@box=\hbox{\ifnum\t@w=0\relax\lu@slur\else\L@slur\fi}%
  700.            {\advance\y@ii by -\wd\ch@box
  701.             \ifdim\y@ii<\slur@off \global\slur@off=\y@ii\fi}%
  702.      \fi
  703.      \global\advance\n@l by 1\relax
  704.   \repeat
  705.   \global\advance\slur@maxlen by \slur@off
  706. %
  707.   \nobreak\global\advance\n@skip by -\slur@maxlen}%
  708. \def\skip@b{\hskip \slur@maxlen
  709.    \global\advance\x@skip by\slur@maxlen}% %
  710.  
  711.  %
  712. %
  713. %\check
  714. %
  715. % symboles slurn20 des liaisons et tenues
  716. %
  717. \newcount\t@wi
  718. \newcount\t@wii
  719. \newcount\t@wiii
  720. \newcount\t@wiv
  721. \newcount\t@wv
  722. \newcount\t@wvi
  723. %
  724. \let\wlog=\@plainwlog
  725. %
  726. \def\k@ii{\fontdimen 8\musictwenty}
  727. \def\k@iii{\fontdimen 9\musictwenty}
  728. \def\k@iiii{\fontdimen 10\musictwenty}
  729. \def\k@iiv{\fontdimen 11\musictwenty}
  730. \def\k@iv{\fontdimen 12\musictwenty}
  731. \def\k@ivi{\fontdimen 13\musictwenty}
  732. \def\k@ivii{\fontdimen 14\musictwenty}
  733. \def\k@iviii{\fontdimen 15\musictwenty}
  734. \def\k@iix{\fontdimen 16\musictwenty}
  735. %
  736. \def\internotei{\fontdimen 17\musictwenty}
  737. \def\internoteii{\fontdimen 18\musictwenty}
  738. \def\internoteiii{\fontdimen 19\musictwenty}
  739. \def\internoteiv{\fontdimen 20\musictwenty}
  740. \def\internotev{\fontdimen 21\musictwenty}
  741. \def\internotevi{\fontdimen 22\musictwenty}
  742. \def\internotevii{\fontdimen 23\musictwenty}
  743. \def\internoteviii{\fontdimen 24\musictwenty}
  744. \def\internoteix{\fontdimen 25\musictwenty}
  745. \def\c@height{\fontdimen 26\musictwenty}
  746. %
  747. \def\qn@width{\fontdimen 27\musictwenty}
  748. \def\hn@width{\fontdimen 28\musictwenty}
  749. \def\wn@width{\fontdimen 29\musictwenty}
  750. \def\sb@width{\fontdimen 30\musictwenty}
  751. \def\bv@width{\fontdimen 31\musictwenty}
  752. \def\gr@width{\fontdimen 32\musictwenty}
  753. %
  754. \def\clef@skip{\fontdimen 28\beamtwenty}
  755. \def\nullthick{\fontdimen 29\beamtwenty}
  756. \def\bbbb@xi{\fontdimen 30\beamtwenty}
  757. \def\bbbb@xii{\fontdimen 31\beamtwenty}
  758. \def\bbbb@xiii{\fontdimen 32\beamtwenty}
  759. \def\bbbb@xiv{\fontdimen 33\beamtwenty}
  760. \def\bbbb@xv{\fontdimen 34\beamtwenty}
  761. \def\bbbb@xvi{\fontdimen 35\beamtwenty}
  762. \def\bbbb@xvii{\fontdimen 36\beamtwenty}
  763. \def\bbbb@xviii{\fontdimen 37\beamtwenty}
  764. \def\bbbb@xix{\fontdimen 38\beamtwenty}
  765. \def\bbbb@xx{\fontdimen 39\beamtwenty}
  766. %
  767. \def\bbbbb@xi{\fontdimen 40\beamtwenty}
  768. \def\bbbbb@xii{\fontdimen 41\beamtwenty}
  769. \def\bbbbb@xiii{\fontdimen 42\beamtwenty}
  770. \def\bbbbb@xiv{\fontdimen 43\beamtwenty}
  771. \def\bbbbb@xv{\fontdimen 44\beamtwenty}
  772. \def\bbbbb@xvi{\fontdimen 45\beamtwenty}
  773. \def\bbbbb@xvii{\fontdimen 46\beamtwenty}
  774. \def\bbbbb@xviii{\fontdimen 47\beamtwenty}
  775. \def\bbbbb@xix{\fontdimen 48\beamtwenty}
  776. \def\bbbbb@xx{\fontdimen 49\beamtwenty}
  777.  
  778. % this macro sets the new big (piano) braces (due to Andreas Egler)
  779. %  !!! Attention !!!
  780. % there is no checking of 
  781. % too small or large dimensions
  782. %
  783. \font\musext=musicbra
  784. \newcount\selbrace
  785. \def\mult@portee{\y@ii=\nbportees\interportee
  786.     \advance\y@ii by -\Interportee
  787.     \advance\y@ii by \nbportees\lthick
  788.     \advance\y@ii by -2\lthick
  789. %    
  790.     \selbrace=\y@ii\relax\select@brace%
  791.     \divide\y@ii by 2\raise\y@\llap{%
  792.     \raise\y@ii\llap{\musext\char\selbrace%
  793.     \kern.5\Interligne}}}%
  794. %
  795. \def\select@brace{\divide\selbrace by 65536%
  796. \advance\selbrace by -40\divide\selbrace by 2}%
  797. % dim to count means 1pt -> 65536 sp
  798. % 40 pt is the length of the smallest brace
  799. % the next brace is 2pt larger
  800.  
  801.  
  802. \catcode`\>=\catcode@gt
  803. \catcode`\<=\catcode@lt
  804. \catcode`\@=\catcodeat
  805.  
  806.